/*
 * JEF - Copyright 2009-2010 Jiyi (mr.jiyi@gmail.com)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package jef.tools.string;

import java.nio.charset.Charset;
import java.nio.charset.UnsupportedCharsetException;

import jef.tools.ArrayUtils;

public class CharsetName {
	static final String[] charsets=new String[]{
		"Big5",
		"Big5-HKSCS",
		"EUC-JP",
		"EUC-KR",
		"GB18030",
		"GB2312",
		"GBK",
		"IBM-Thai",
		"IBM00858",
		"IBM01140",
		"IBM01141",
		"IBM01142",
		"IBM01143",
		"IBM01144",
		"IBM01145",
		"IBM01146",
		"IBM01147",
		"IBM01148",
		"IBM01149",
		"IBM037",
		"IBM1026",
		"IBM1047",
		"IBM273",
		"IBM277",
		"IBM278",
		"IBM280",
		"IBM284",
		"IBM285",
		"IBM297",
		"IBM420",
		"IBM424",
		"IBM437",
		"IBM500",
		"IBM775",
		"IBM850",
		"IBM852",
		"IBM855",
		"IBM857",
		"IBM860",
		"IBM861",
		"IBM862",
		"IBM863",
		"IBM864",
		"IBM865",
		"IBM866",
		"IBM868",
		"IBM869",
		"IBM870",
		"IBM871",
		"IBM918",
		"ISO-2022-CN",
		"ISO-2022-JP",
		"ISO-2022-JP-2",
		"ISO-2022-KR",
		"ISO-8859-1",
		"ISO-8859-13",
		"ISO-8859-15",
		"ISO-8859-2",
		"ISO-8859-3",
		"ISO-8859-4",
		"ISO-8859-5",
		"ISO-8859-6",
		"ISO-8859-7",
		"ISO-8859-8",
		"ISO-8859-9",
		"JIS_X0201",
		"JIS_X0212-1990",
		"KOI8-R",
		"KOI8-U",
		"Shift_JIS",
		"TIS-620",
		"US-ASCII",
		"UTF-16",
		"UTF-16BE",
		"UTF-16LE",
		"UTF-32",
		"UTF-32BE",
		"UTF-32LE",
		"UTF-8",
		"windows-1250",
		"windows-1251",
		"windows-1252",
		"windows-1253",
		"windows-1254",
		"windows-1255",
		"windows-1256",
		"windows-1257",
		"windows-1258",
		"windows-31j",
		"x-Big5-Solaris",
		"x-euc-jp-linux",
		"x-EUC-TW",
		"x-eucJP-Open",
		"x-IBM1006",
		"x-IBM1025",
		"x-IBM1046",
		"x-IBM1097",
		"x-IBM1098",
		"x-IBM1112",
		"x-IBM1122",
		"x-IBM1123",
		"x-IBM1124",
		"x-IBM1381",
		"x-IBM1383",
		"x-IBM33722",
		"x-IBM737",
		"x-IBM834",
		"x-IBM856",
		"x-IBM874",
		"x-IBM875",
		"x-IBM921",
		"x-IBM922",
		"x-IBM930",
		"x-IBM933",
		"x-IBM935",
		"x-IBM937",
		"x-IBM939",
		"x-IBM942",
		"x-IBM942C",
		"x-IBM943",
		"x-IBM943C",
		"x-IBM948",
		"x-IBM949",
		"x-IBM949C",
		"x-IBM950",
		"x-IBM964",
		"x-IBM970",
		"x-ISCII91",
		"x-ISO-2022-CN-CNS",
		"x-ISO-2022-CN-GB",
		"x-iso-8859-11",
		"x-JIS0208",
		"x-JISAutoDetect",
		"x-Johab",
		"x-MacArabic",
		"x-MacCentralEurope",
		"x-MacCroatian",
		"x-MacCyrillic",
		"x-MacDingbat",
		"x-MacGreek",
		"x-MacHebrew",
		"x-MacIceland",
		"x-MacRoman",
		"x-MacRomania",
		"x-MacSymbol",
		"x-MacThai",
		"x-MacTurkish",
		"x-MacUkraine",
		"x-MS932_0213",
		"x-MS950-HKSCS",
		"x-mswin-936",
		"x-PCK",
		"x-SJIS_0213",
		"x-UTF-16LE-BOM",
		"X-UTF-32BE-BOM",
		"X-UTF-32LE-BOM",
		"x-windows-50220",
		"x-windows-50221",
		"x-windows-874",
		"x-windows-949",
		"x-windows-950",
		"x-windows-iso2022jp"
	};
	public static int getOrder(Charset cs){
		int n=ArrayUtils.indexOf(charsets, cs.name());
		if(ArrayUtils.INDEX_NOT_FOUND==n){
			throw new UnsupportedCharsetException(cs.name());
		}
		return n;
	}
	public static String getName(int index) {
		return charsets[index];
	}
	public static String getStdName(String name){
		try{
			Charset cs=Charset.forName(name);
			return cs.name();
		}catch(UnsupportedCharsetException e){
			return null;
		}
	}
}
